Many current products and services can be customized by a customer before being purchased. For example, computer systems typically include many possible options and configurations that can be specifically selected or configured by the customer. Other examples of highly configurable products and services include telephone switching systems, airplanes, automobiles, mobile telephone services, insurance policies, and computer software.
Product and service providers typically provide a “product configurator” that allows a customer or sales engineer to interact with a computer in order to customize and configure a solution by selecting among optional choices. Some known product configurators are constraint-based. For these configurators, constraints are enforced between optional choices, allowing the user to select the choices they want, while validating that the resulting set of user choices is valid.
The user of an interactive configuration system may not know how to answer every question, or care about the selection of every option required to complete the configuration. The business providing the configurator to the end user may also want to suggest certain choices to the end user. For both of these reasons, it may be useful to present the user with “default decisions.” A default decision may be a simple choice (i.e., a value that is assigned to some node in the constraint network) or it may be a more complex constraint involving one or more nodes as operands. In the known constraint-based configurators, a default decision is processed after all user decisions have been made, as part of a heuristic search. However, this does not allow the user to see the default decisions or their consequences while making their own decisions. Further, if the user wants to change the default decisions at that point, it is typically necessary to undo the entire search, revise the user decisions, and re-run the search.